package Managment;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import NegocioVO.EmpleadoVO;
import bean.EmpleadoBean;
import bean.IngresoUsuarioBean;
import bean.IngresoUsuarioId;
import dao.EmpleadoDao;
import dao.IngresoUsuarioDao;

public class ManagmentEmpleado {
	
	private static ManagmentEmpleado instancia;
	
	public static ManagmentEmpleado getInstancia(){
		if(instancia == null)
			instancia = new ManagmentEmpleado();
		return instancia;
	}

	public EmpleadoVO HibernateAVo(EmpleadoBean responsable) {
		EmpleadoVO empleadoVO = new EmpleadoVO();
		empleadoVO.setApellido(responsable.getApellido());
		empleadoVO.setIdEmpleado(responsable.getIdEmpleado());
		empleadoVO.setIdUsuario(responsable.getIdUsuario());
		empleadoVO.setNombre(responsable.getNombre());
		empleadoVO.setPassword(responsable.getPassword());
		return empleadoVO;
	}

	public List<EmpleadoVO> ListHibernateAVo(List<EmpleadoBean> empleados) {
		List<EmpleadoVO> empleadosVO = new ArrayList<EmpleadoVO>(); 
		for(int i = 0; empleados.size() - 1 >= i; i++){
			EmpleadoVO empleadoVO = new EmpleadoVO();
			empleadoVO.setApellido(empleados.get(i).getApellido());
			empleadoVO.setIdEmpleado(empleados.get(i).getIdEmpleado());
			empleadoVO.setIdUsuario(empleados.get(i).getIdUsuario());
			empleadoVO.setNombre(empleados.get(i).getNombre());
			empleadoVO.setPassword(empleados.get(i).getPassword());
			empleadosVO.add(empleadoVO);
		}
		return empleadosVO;
	}


	public List<EmpleadoBean> ListVoAHibernate(List<EmpleadoVO> empleados) {
		List<EmpleadoBean> empleadosBes = new ArrayList<EmpleadoBean>();
		
		for(int i = 0; empleados.size() - 1 >= i; i++){
			EmpleadoBean empleadoBe = new EmpleadoBean();
			empleadoBe.setApellido(empleados.get(i).getApellido());
			empleadoBe.setIdEmpleado(empleados.get(i).getIdEmpleado());
			empleadoBe.setIdUsuario(empleados.get(i).getIdUsuario());
			empleadoBe.setNombre(empleados.get(i).getNombre());
			empleadoBe.setPassword(empleados.get(i).getPassword());
			empleadosBes.add(empleadoBe);
		}
		return empleadosBes;
	}
	
	public boolean authenticateUser(String UserID, String PassWord) 
	{

		EmpleadoDao empleDao = new EmpleadoDao();
		boolean existeEmpleado = false;
		existeEmpleado = empleDao.validarEmpleadoContra(UserID, PassWord);
		
		if (existeEmpleado == true)
		 {
			 
			//ya que existe el empleado lo logueamos
			IngresoUsuarioDao ingDao = new IngresoUsuarioDao();
			int obtenerId = 0;
			Date fechaHoy = new Date();
			
			obtenerId = empleDao.traerEmpleadoId(UserID, PassWord);
			IngresoUsuarioBean ingUsu = new IngresoUsuarioBean();
			IngresoUsuarioId idIngUsu = new IngresoUsuarioId();
			idIngUsu.setIdEmpleado(obtenerId);
			idIngUsu.setIngresoUsuario(ingDao.traerMaxIngreso());
			ingUsu.setFechaHora(fechaHoy);
			ingUsu.setId(idIngUsu);
			
			ingDao.altaIngresoUsuario(ingUsu);
			return true;
			 
		 }
		return existeEmpleado;
		}
	
	public List<EmpleadoVO> listarMozoDisponiblesLocal (int idLocal)
	{
		EmpleadoDao miDAO = new EmpleadoDao();
		List<EmpleadoVO> EmpleadosVO = new ArrayList<EmpleadoVO>();
		List<EmpleadoBean> empleados = miDAO.listarMozos(idLocal);
		for (int i = 0; empleados.size() - 1 >= i; i++)
		{
			EmpleadosVO.add(this.HibernateAVo(empleados.get(i)));
		}
		return EmpleadosVO;
	}

	public Integer BuscarLocalId(String userID, String passWord) {
		
		EmpleadoDao empleDao = new EmpleadoDao();
		
		return empleDao.BuscarLocalId(userID, passWord);

	}
	
	
	
	
	
	
	}



